import { IsNumber, IsString, IsOptional, IsDate, ValidateNested } from "class-validator";
import { Type } from "class-transformer";

/**
 * 用户摘要信息DTO（用于角色响应中的用户列表）
 */
export class UserSummaryDto {
  @IsNumber({}, { message: "用户ID必须是数字" })
  id: number;

  @IsString({ message: "用户名必须是字符串" })
  username: string;
}

/**
 * 角色信息返回DTO
 */
export class RoleResponseDto {
  @IsNumber({}, { message: "角色ID必须是数字" })
  id: number;

  @IsString({ message: "角色名称必须是字符串" })
  name: string;

  @IsOptional()
  @IsDate({ message: "创建时间必须是有效日期" })
  @Type(() => Date)
  createdAt?: Date;

  @IsOptional()
  @IsDate({ message: "更新时间必须是有效日期" })
  @Type(() => Date)
  updatedAt?: Date;

  @IsOptional()
  @ValidateNested({ each: true, message: "用户信息格式不正确" })
  @Type(() => UserSummaryDto)
  users?: Array<UserSummaryDto>;
}
